package com.yhq.basic.jvm.gc;

/**
 * 判断对象已死亡算法
 * 1.引用计数法：这个方法实现简单，效率高，但是目前主流的虚拟机中并没有选择这个算法来管理内存，其最主要的原因是它很难解决
 * 对象之间相互循环引用的问题。
 * 2.可达性分析
 *
 * 常见引用类型：强引用，软引用，弱引用，虚引用
 * 强引用：普通变量引用
 * 软引用：将对象用SoftReference 软引用类型的对象包裹，正常情况不会被回收，但是GC做完发现释放不出空间存放新的对象，
 * 则会把这些软引用的对象回收掉。
 * 软引用-应用场景-可以用来实现内存敏感的高速缓存。
 * 弱引用：将对象用WeakReference软引用类型的对象包裹，弱引用跟没引用差不多，GC会直接回收掉，很少用
 * 虚引用：虚引用也称为幽灵引用或者幻影引用，它是最弱的一种引用关系，几乎不用
 *
 * finalize()方法最终判定对象是否存活
 *
 * 如何判断一个类是无用的类
 * 方法区主要回收的是无用的类，那么如何判断一个类是无用的类的呢？
 * 类需要同时满足下面3个条件才能算是 “无用的类” ：
 * 1）该类所有的实例都已经被回收，也就是 Java 堆中不存在该类的任何实例。
 * 2）加载该类的 ClassLoader 已经被回收。
 * 3）该类对应的 java.lang.Class 对象没有在任何地方被引用，无法在任何地方通过反射访问该类的方法。
 *
 *
 * @author hqyin
 * @date 2024/8/19 3:09 PM
 */
public class Demo1ReferenceCountingGC {
    public static void main(String[] args) {

    }
}
